const cheerio = require('cheerio')
const utils = require('./utils')

const galleryListParser = (body) => {
  let $ = cheerio.load(body)
  let pageNumber = $('table.ptt td').eq(-2).find('a').text() - 1
  let payload = { pageNumber, payload: [] }
  $('table.itg tr').each(function (i, elem) {
    if (i !== 0 && $(this).find('.itdc').find('img').attr('alt') !== undefined) {
      try {
        let category = $(this).find('.itdc').find('img').attr('alt')
        if (!category) {
          throw new Error('LISTPARSEFAIL')
        }
        let date = $(this).find('td').eq(1).text()
        let thumb = null
        let jpn_title = null
        let rating = utils.ratingParser($(this).find('td .it4r')[0].attribs.style)
        if (i === 1) {
            thumb = $(this).find('td').eq(2).find('.it2 img').attr('src')
            jpn_title = $(this).find('td').eq(2).find('.it2 img').attr('alt')
        } else {
          thumb = utils.loadImg($(this).find('td').eq(2).find('.it2').text())[0]
          jpn_title = utils.loadImg($(this).find('td').eq(2).find('.it2').text())[1]
        }
        let gid = $(this).find('td').eq(2).find('.it5 a').attr('href').split('/')[4]
        let token = $(this).find('td').eq(2).find('.it5 a').attr('href').split('/')[5]
        let title = $(this).find('td').eq(2).find('.it5').find('a').text()
        let uploader = $(this).find('td.itu a').text()
        let lang = utils.generateSLang(title)
        payload.payload.push({category, date, thumb, jpn_title, title, uploader, rating, gid, token, lang})
      } catch (err) {
        throw new Error(err.message)
      }
    }
  })
  return payload
}

module.exports = galleryListParser
